#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
using namespace std;

const int maxn = 110;
char map[maxn][maxn];
int dir[8][2] = { { 1, 0}, { 0, 1}, { -1, 0}, { 0, -1},
                    { 1, 1}, { 1, -1}, { -1, 1}, { -1, -1} };

int n, m, ans;

void init()
{
    getchar();
    ans = 0;

    for ( int i = 1; i <= n; ++ i) {
        for ( int j = 1; j <= m; ++ j) {
            cin >> map[i][j];
//            map[i][j] = getchar();
        }
//        getchar();
    }

    return ;
}

void dfs( int x, int y)
{
    if ( 1 > x || 1 > y || x > n  || y > m ) {
        return ;
    }

    if ( '*' == map[x][y]) {
        return ;
    }
    map[x][y] = '*';
    for ( int i = 0; i < 8; ++ i) {
        int xx = x + dir[i][0], yy = y + dir[i][1];
        if ( 1 > xx || 1 > yy || xx > n  || yy > m ) {
            continue;
        }
        if ( '*' == map[xx][yy]) {
            continue;
        }

        dfs( xx, yy);
    }

    return ;
}

int main()
{
    while ( scanf( "%d%d", &n, &m), m) {
        init();

        for ( int i = 1; i <= n; ++ i) {
            for ( int j = 1; j <= m; ++ j) {
                if ( '@' == map[i][j]) {
//                    cout << i <<j << endl;
                    dfs( i, j);
                    ans ++;
                }
            }
        }

        printf( "%d\n", ans);
    }

    return 0;
}
